#include<cstdio>
#include<iostream>
#include<unistd.h>
#include<sys/types.h>
#include<sys/wait.h>
int main()
{
    //创建5个任务时间不同的子进程
    for(int i=0;i<5;i++)
    {
        pid_t pid=fork();
        if(pid==0)
        {
            printf("我是子进程%d,我的pid是:%d\n",i,getpid());
            sleep(i+2);
            exit(1);
        }
    }
    int status=0;
    while(1)
    {
        //非阻塞等待所有子进程
        pid_t pid=waitpid(-1,&status,WNOHANG);
        if(pid>0)
        {
            printf("子进程%d等待成功\n",pid);
        }
        else if(pid==0)
        {
            printf("没有子进程回收成功,继续轮调\n");
            sleep(1);
        }
        else if(pid==-1)
        {
            printf("所有子进程已经全部回收\n");
            break;
        }
    }
   return 0; 
}
